<HTML>
<HEAD>
<!-- This HTML file has been created by texi2html 1.29
     from news4.1.tnf on 19 December 2010 -->

<TITLE>New Features of Eli Version 4.1 - LIDO Language and Liga System</TITLE>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000EE" VLINK="#551A8B" ALINK="#FF0000" BACKGROUND="gifs/bg.gif">
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0" VALIGN=BOTTOM>
<TR VALIGN=BOTTOM>
<TD WIDTH="160" VALIGN=BOTTOM>
<A HREF="http://eli-project.sourceforge.net/">
<IMG SRC="gifs/elilogo.gif" BORDER=0>
</A>&nbsp;
</TD>
<TD WIDTH="25" VALIGN=BOTTOM>
<img src="gifs/empty.gif" WIDTH=25 HEIGHT=25>
</TD>
<TD ALIGN=LEFT WIDTH="475" VALIGN=BOTTOM>
<A HREF="index.html"><IMG SRC="gifs/title.png" BORDER=0></A>
</TD>
<!-- |DELETE FOR SOURCEFORGE LOGO|
<TD>
<a href="http://sourceforge.net/projects/eli-project">
<img
  src="http://sflogo.sourceforge.net/sflogo.php?group_id=70447&amp;type=13"
  width="120" height="30"
  alt="Get Eli: Translator Construction Made Easy at SourceForge.net.
    Fast, secure and Free Open Source software downloads"/>
</a>
</TD>
|DELETE FOR SOURCEFORGE LOGO| -->
</TR>
</TABLE>

<HR size=1 noshade width=785 align=left>
<TABLE BORDER=0 CELLSPACING=2 CELLPADDING=0>
<TR>
<TD VALIGN=TOP WIDTH="160">
<h4>General Information</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="index.html">Eli: Translator Construction Made Easy</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="gindex_1.html#SEC1">Global Index</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="faq_toc.html" >Frequently Asked Questions</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ee.html" >Typical Eli Usage Errors</a> </td></tr>
</table>

<h4>Tutorials</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="EliRefCard_toc.html">Quick Reference Card</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="novice_toc.html">Guide For new Eli Users</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="news_toc.html">Release Notes of Eli</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="nametutorial_toc.html">Tutorial on Name Analysis</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="typetutorial_toc.html">Tutorial on Type Analysis</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ee.html" >Typical Eli Usage Errors</a> </td></tr>
</table>

<h4>Reference Manuals</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ui_toc.html">User Interface</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="pp_toc.html">Eli products and parameters</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lidoref_toc.html">LIDO Reference Manual</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ee.html" >Typical Eli Usage Errors</a> </td></tr>
</table>

<h4>Libraries</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lib_toc.html">Eli library routines</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="modlib_toc.html">Specification Module Library</a></td></tr>
</table>

<h4>Translation Tasks</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lex_toc.html">Lexical analysis specification</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="syntax_toc.html">Syntactic Analysis Manual</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="comptrees_toc.html">Computation in Trees</a></td></tr>
</table>

<h4>Tools</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lcl_toc.html">LIGA Control Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="show_toc.html">Debugging Information for LIDO</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="gorto_toc.html">Graphical ORder TOol</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="fw_toc.html">FunnelWeb User's Manual</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ptg_toc.html">Pattern-based Text Generator</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="deftbl_toc.html">Property Definition Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="oil_toc.html">Operator Identification Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="tp_toc.html">Tree Grammar Specification Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="clp_toc.html">Command Line Processing</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="cola_toc.html">COLA Options Reference Manual</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="idem_toc.html">Generating Unparsing Code</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="mon_toc.html">Monitoring a Processor's Execution</a> </td></tr>
</table>

<h4>Administration</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="sysadmin_toc.html">System Administration Guide</a> </td></tr>
</table>

<HR WIDTH="100%">
<A HREF="mailto:eli-project-users@lists.sourceforge.net">
<IMG SRC="gifs/button_mail.gif" BORDER=0 ALIGN="left"></A>
<A HREF="index.html"><IMG SRC="gifs/home.gif" BORDER=0 ALIGN="right"></A>

</TD>
<TD VALIGN=TOP WIDTH="25"><img src="gifs/empty.gif" WIDTH=25 HEIGHT=25></TD>

<TD VALIGN=TOP WIDTH="600">
<H1>New Features of Eli Version 4.1</H1>
<P>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="news4.1_2.html"><IMG SRC="gifs/next.gif" ALT="Next Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="news4.1_toc.html"><IMG SRC="gifs/up.gif" ALT="Table of Contents" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT="">
<HR size=1 noshade width=600 align=left>
<H1><A NAME="SEC1" HREF="news4.1_toc.html#SEC1">LIDO Language and Liga System</A></H1>
<P>
The modifications of the Lido language and the Liga system
refer to the following topics: The use of symbol computations
is further simplified by removal of certain restrictions,
and by introduction of some new constructs.
Some restrictions on bottom-up evaluation are removed.
A mechanism has been installed such that messages given by
the C compiler on the generated evaluator are related back to
the Lido text.
<P>
None of the modifications invalidates existing Lido specifications.
<P>
For complete descriptions of the modified constructs see the 
Liga documentation:
See  <A HREF="lidoref_toc.html">LIDO -- Reference Manual</A>.
See  <A HREF="comptrees_toc.html">LIDO - Computation in Trees</A>.
<P>
<H2><A NAME="SEC2" HREF="news4.1_toc.html#SEC2">CONSTITUENTS Restrictions Removed</A></H2>
<A NAME="IDX1"></A>
<P>
If a symbol computation contains a CONSTITUENTS construct, like
<PRE>
  CLASS SYMBOL CS COMPUTE
    SYNT.c = f (CONSTITUENTS X.a WITH (t, f2, f1, f0));
  END;
</PRE>
it was not allowed to inherit CS to a symbol that has a
production with an empty right-hand side.
It was also a violation if X were a CLASS symbol that is
not inherited to any symbol. This was sometimes annoying,
especially when using library modules.
<P>
Both restrictions have been removed. The result of the CONSTITUENTS
is in such cases the result of the <CODE>f0</CODE>-function.
A VOID CONSTITUENTS is replaced by nothing in such cases.
<P>
See  <A HREF="lidoref_9.html#SEC16">CONSTITUENT(S) of LIDO -- Reference Manual</A>.
<P>
<H2><A NAME="SEC3" HREF="news4.1_toc.html#SEC3">CHAIN in Empty Rules</A></H2>
<A NAME="IDX2"></A>
<A NAME="IDX3"></A>
<A NAME="IDX4"></A>
<A NAME="IDX5"></A>
<P>
It was a violation if a computation containing a TAIL chain access
is inherited to a symbol that has a production with an 
empty right-hand side. A HEAD computation was dropped in such cases.
This was sometimes annoying, especially when using library modules.
This restriction has been removed. 
<P>
Now, if a computation that contains a CHAINSTART, HEAD, or TAIL
is inherited to a rule with an empty right-hand side,
its effect is as if there was a symbol on the right-hand side
that passes the chain unchanged.
<P>
See  <A HREF="lidoref_9.html#SEC17">CHAIN of LIDO -- Reference Manual</A>.
<P>
<H2><A NAME="SEC4" HREF="news4.1_toc.html#SEC4">Grammar Root Symbol</A></H2>
<A NAME="IDX6"></A>
<A NAME="IDX7"></A>
<P>
The 
<PRE>
  CLASS SYMBOL ROOTCLASS END;
</PRE>
is predefined without any computation.
It is inherited to the particular root symbol of the tree grammar.
<P>
This facility is especially useful for writing grammar independent
modules which need to associate computations to the grammar root.
Module users then do not need to explicitly inherit a root role.
<P>
See  <A HREF="lidoref_12.html#SEC21">Predefined Entities of LIDO -- Reference Manual</A>.
<P>
<H2><A NAME="SEC5" HREF="news4.1_toc.html#SEC5">Right-Hand Side Access</A></H2>
<A NAME="IDX8"></A>
<P>
The entities <CODE>TermFct</CODE>, <CODE>RhsFct</CODE>, and <CODE>RULENAME</CODE>
are predefined to simplify symbol computations that access
the right-hand side of rules they are inherited to.
<P>
See  <A HREF="lidoref_12.html#SEC21">Predefined Entities of LIDO -- Reference Manual</A>.
<A NAME="IDX9"></A>
<A NAME="IDX10"></A>
<P>
A function <CODE>TermFct</CODE> is predefined to be used for systematic
access of terminal values in computations. It is intended to be
used in computations of <CODE>CLASS SYMBOL</CODE>s:
<PRE>
  CLASS SYMBOL LeafNode COMPUTE
    SYNT.Ptg = TermFct ("ToPtg", TERM);
  END;
  SYMBOL LiteralExpr INHERITS LeafNode END;
</PRE>
<P>
If there were the following two rules for <CODE>LiteralExpr</CODE> 
that derive to different terminals, then
the above computation is expanded as shown below:
<PRE>
  RULE: LiteralExpr ::= IntNumber COMPUTE
    LiteralExpr.Ptg = ToPtgIntNumber (IntNumber);
  END;
  RULE: LiteralExpr ::= FloatNumber COMPUTE
    LiteralExpr.Ptg = ToPtgFloatNumber (FloatNumber);
  END;
</PRE>
Suitable functions have to be defined for the calls constructed
by prefixing the terminal name with the string given in the
<CODE>TermFct</CODE> call.
<A NAME="IDX11"></A>
<P>
A call of the predefined function <CODE>RhsFct (C_String, arguments ...)</CODE>
is substituted by a call
of a function whose name is composed of the <CODE>C_String</CODE> and
and two numbers that indicate how many nonterminals and terminals
are on the right-hand side of the rule that has (or inherits) this call.
The remaining arguments are taken as arguments of the substituted
call. E.g. in a rule <CODE>RULE: X ::= Id Y Id Z Id END;</CODE>,
where <CODE>Y, Z</CODE> are nonterminals, and <CODE>Id</CODE> is a terminal,
a call <CODE>RhsFct ("PTGChoice", a, b)</CODE> is substituted by
<CODE>PTGChoice_2_3 (a, b)</CODE>.
Usually, <CODE>RhsFct</CODE> will be used in symbol computations,
having arguments that are obtained by the <CODE>RHS</CODE> construct and
by a <CODE>TermFct</CODE> call.
<A NAME="IDX12"></A>
<A NAME="IDX13"></A>
<P>
<CODE>RULENAME</CODE> can be used in computations. It is replaced
by the rule name as a string literal.
<P>
<H2><A NAME="SEC6" HREF="news4.1_toc.html#SEC6">Bottom-up Evaluation</A></H2>
<A NAME="IDX14"></A>
<A NAME="IDX15"></A>
<A NAME="IDX16"></A>
<A NAME="IDX17"></A>
<A NAME="IDX18"></A>
<P>
Liga's strategy for scheduling <CODE>BOTTOMUP</CODE> computations has
been changed: The generated evaluator performs computations
during the tree construction phase if and only if there are
some computations marked <CODE>BOTTOMUP</CODE>.
<P>
See  <A HREF="lidoref_5.html#SEC6">Computations of LIDO -- Reference Manual</A>.
<P>
Requesting <CODE>BOTTOM_UP</CODE> or <CODE>TREE_COMPLETE</CODE> in a 
<CODE>.ctl</CODE> file is now unnecessary and meaningless.
<P>
See  <A HREF="lcl_3.html#SEC3">Order Options of LIGA - Control Language</A>.
<P>
Attributes are 
computed during the tree construction  phase only if they are needed for
<CODE>BOTTOMUP</CODE> computations. That strategy reduces the size
of the tree in general.
<P>
Information about the results of Liga's analysis for <CODE>BOTTOMUP</CODE>
can be obtained by deriving <CODE>OrdInfo</CODE>.
<P>
The restrictions on <CODE>BOTTOMUP</CODE> computations have been relaxed:
The facility of subtrees being built by computations may be
used together with some other computations being marked <CODE>BOTTOMUP</CODE>,
unless computations in such generated subtrees are preconditions
for <CODE>BOTTOMUP</CODE> computations.
<P>
Furthermore, chain productions may be introduced into the tree grammar,
if necessary, without having corresponding chain productions in the
concrete grammar, as long as they are not involved in <CODE>BOTTOMUP</CODE>
computations. This situation is automatically checked in cooperation
between Liga and the Maptool.
<A NAME="IDX20"></A>
<A NAME="IDX19"></A>
<P>
<HR size=1 noshade width=600 align=left>
<P>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="news4.1_2.html"><IMG SRC="gifs/next.gif" ALT="Next Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="news4.1_toc.html"><IMG SRC="gifs/up.gif" ALT="Table of Contents" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT="">
<HR size=1 noshade width=600 align=left>
</TD>
</TR>
</TABLE>

</BODY></HTML>
